package org.jhh.trigger.api;

import org.jhh.trigger.api.dto.*;
import org.jhh.trigger.api.response.Response;

import java.math.BigDecimal;
import java.util.List;

public interface IRaffleActivityService {

    /*
    * 活动装配 数据装配预热*/
    Response<Boolean> armory(Long activityId);

//    活动抽奖接口 那就得想好活动的抽奖流程 以及怎么调用责任链这些
    /*
    Step1:参数校验
    Step2:参与活动
    Step3:抽奖策略
    Step4:存放结果（这个时候会有定时任务通过MQ进行补偿）
    Step5:返回
    * */
    Response<ActivityDrawResponseDTO>  draw(ActivityDrawRequestDTO activityDrawRequestDTO);

    Response<Boolean> calendarSignRebate(String userId);

//  判断是否完成日历签到接口
    Response<Boolean> isCalendarSignRebate(String userId);

    /**
     * 查询用户活动账户
     *
     * @param request 请求对象「活动ID、用户ID」
     * @return 返回结果「总额度、月额度、日额度」
     */
    Response<UserActivityAccountResponseDTO> queryUserActivityAccount(UserActivityAccountRequestDTO request);

    /**
     * 查询sku商品集合
     *
     * @param activityId 活动ID
     * @return 商品集合
     */
    Response<List<SkuProductResponseDTO>> querySkuProductListByActivityId(Long activityId);

    /**
     * 查询用户积分值
     *
     * @param userId 用户ID
     * @return 可用积分
     */
    Response<BigDecimal> queryUserCreditAccount(String userId);

    /**
     * 积分支付兑换商品
     *
     * @param request 请求对象「用户ID、商品ID」
     * @return 兑换结果
     */
    Response<Boolean> creditPayExchangeSku(SkuProductShopCartRequestDTO request);
}
